﻿/****************************************************************************
 * 工 具 名:   HK_TargetCam（引入了QF框架）
 
 * 描    述:     + Camera多目标切换管理工具,可在三维可视化项目中控制Camera在多个Target之间切换；
                + Target分为三种：RotTarget、AreaTarget、FollowTarget；
                + 切换至RotTarget目标点后，相机可围绕Target进行旋转、缩放操作；
                + 切换至AreaTarget目标点后，相机可在Target标识区域进行前后左右平移、缩放操作；
                + 切换至FollowTarget目标点后，相机可跟随目标点移动，且可围绕移动的Target进行旋转、缩放操作；
                + 可根据Target的枚举值进行切换，切换时可更改Camera缩放速度、移动速度、切换的延时时间、切换后是否锁住相机等；
                + TargetCamera下有个Mask子物体，其材质球为 BuildIn 渲染管线，若用URP或HDRP渲染管线，需手动调整Mask的shader。

 * 使用方式：    + 在当前项目的 Architecture 中注册 IHK_TargetCamSystem；
                + 将 HK_TargetCamController 脚本中的 Architecture 修改为当前项目的 Architecture；
                + 删除场景中默认的Main Camera，将 TargetCamera 预设体，拖入场景中;
                + 在 Scene视窗右上角，开启Gizmos单选按钮（本工具可视化编辑是基于Gizmos绘制的）；
                + 根据需求，在当前场景中添加 RotTarget、AreaTarget、FollowTarget（可将预设体拖入场景中进行编辑）；
                + 编辑 HK_RotTarget、HK_AreaTarget、HK_FollowTarget 等组件的枚举标记（TargetEnum），该属性是本工具最重要的属性之一，相机通过判断该属性进行切换，请确保该属性在当前场景的唯一性，若存在重复，则将提示警告；
                + 编辑 HK_RotTarget、HK_AreaTarget、HK_FollowTarget 等组件的其他属性：FOV、默认距离等；
                + 调整 TargetCamera 物体上的 HK_TargetCamera 组件，对其进行初始化参数编辑；
                + 若 HK_TargetCamera 组件指定了 initTarget （初始化目标点）,则运行后 TargetCamera 会自动转换到 initTarget 对应的目标；
                + 运行时，可发送 **CMD_SetDefaultSpeed** 指令（并传入对应参数）设置 Camera 默认的MoveSpeed（默认值为2）和ZoomSpeed（默认值为4）；
                + 运行时，可发送 **CMD_ChangeCamTarget** 指令（并传入对应参数）进行 Camera 目标切换；
                + 可通过 **SetMoveSpeed** 链式方法，设置切换后相机的移动速度（否则为DefaultMoveSpeed数值）；
                + 可通过 **SetZoomSpeed** 链式方法，设置切换后相机的缩放速度（否则为DefaultZoomSpeed数值）；
                + 可通过 **SetDelayTime** 链式方法，设置相机切换的延时时间；
                + 可通过 **SetUsingFlash** 链式方法，设置相机切换为闪现方式（默认启用眨眼特效，若不启用则传入false）；
                + 可通过 **SetCamLock** 链式方法，设置切换后，是否锁住相机；
                + 可订阅事件，在摄像机目标切换前后进行响应：
                  + 订阅 **Event_SwitchTargetBegin** 事件，当目标切换开始时接受到该事件；
                  + 订阅 **Event_SwitchTargetEnd** 事件，当目标切换完成后接受到该事件；
                + 具体用法，可参考 Test_UseTargetCam 脚本。

 * 外部依赖：  Dotween
 
 * 版    本：  V1.1
 * 创 建 者：  京产肠饭、谭潇杰
 * 创建时间：  2023/4/19
 * 链   接：  https://gitee.com/JingChanChangFan/hk_-unity-tools
*****************************************************************************/

using QFramework;

namespace HKTools
{
    public class HKTargetCam_Architecture : Architecture<HKTargetCam_Architecture>
    {
        protected override void Init()
        {
            this.RegisterSystem<IHK_TargetCamSystem>(new HK_TargetCamSystem());
        }
    }
}